/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Pesistencia;

import BancoDados.BancoDados;
import Entidade.CidadeModel;
import Entidade.EnderecoModel;
import java.sql.ResultSet;
import java.util.ArrayList;

/**
 *
 * @author Aluno
 */
public class EnderencoPersistencia {
 BancoDados bd;
 CidadePersistencia cidadePersistencia;

    public EnderencoPersistencia(CidadePersistencia cidadePersistencia) {
        bd = new BancoDados();
        this.cidadePersistencia = cidadePersistencia;
    }
 
 
      
  public ArrayList<EnderecoModel> getListaProdutos() {
      
      
        try {
            ResultSet rs = bd
                    .consultar("SELECT * FROM endereco");
            ArrayList<EnderecoModel> retorno = new ArrayList<>();
            while(rs.next()){
                
                CidadeModel cidade = cidadePersistencia.buscar(rs.getInt("codCidade"));
                EnderecoModel p = new EnderecoModel(rs.getInt("codEndereco"), cidade.getCodigo(),rs.getString("rua"),rs.getInt("numero"),rs.getString("cep"));
                retorno.add(p);
            }
            return retorno;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public EnderencoPersistencia(BancoDados bd) {
        this.bd = bd;
    }

    public void cadastrar( EnderecoModel endereco) {
        try {
            bd.atualizar("INSERT INTO endereco (codEndereco,codCidade,rua,numero,cep) VALUES ("+endereco.getCodigo()+" ,"+endereco.getCidade()+" ,'"+endereco.getRua()+"' ,"+endereco.getNumero()+" ,"+endereco.getCep()+")");

            System.out.println("INSERT INTO endereco (codEndereco,codCidade,rua,numero,cep) VALUES ("+endereco.getCodigo()+" ,"+endereco.getCidade()+" ,'"+endereco.getRua()+"' ,'"+endereco.getNumero()+"' ,'"+endereco.getCep()+"')");
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }

    public  EnderecoModel buscar(int codigo) {
        try {
            ResultSet rs = bd.consultar("SELECT * FROM endereco WHERE codEndereco = "+codigo);
            rs.next();
             EnderecoModel retorno;
            if(rs.getRow() == 0){
                retorno = null;
            } else {
                  CidadeModel cidade = cidadePersistencia.buscar(rs.getInt("codCidade"));
                retorno =  new EnderecoModel(rs.getInt("codEndereco"), cidade.getCodigo(),rs.getString("rua"),rs.getInt("numero"),rs.getString("cep"));
            }
            return retorno;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }   
    
    
    public  EnderecoModel buscarNome(String codigo) {
        try {
            ResultSet rs = bd.consultar("SELECT * FROM endereco WHERE rua = '"+codigo+"'");
            rs.next();
             EnderecoModel retorno;
            if(rs.getRow() == 0){
                retorno = null;
            } else {
                  
                retorno =  new EnderecoModel(rs.getInt("codEndereco"),rs.getInt("codCidade"),rs.getString("rua"),rs.getInt("numero"),rs.getString("cep"));
            }
            return retorno;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    };
    public  int buscarNome1(String codigo) {
        try {
            ResultSet rs = bd.consultar("SELECT * FROM endereco WHERE rua = '"+codigo+"'");
            rs.next();
             EnderecoModel retorno;
            if(rs.getRow() == 0){
                retorno = null;
            } else {
                retorno =  new EnderecoModel(rs.getInt("codEndereco"),rs.getInt("codCidade"),rs.getString("rua"),rs.getInt("numero"),rs.getString("cep"));
            }
            return retorno.getCodigo();
        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        }
    }

    public int recuperarUltimoCodigo() {
        try {
            ResultSet rs = bd.consultar("SELECT MAX(codEndereco) FROM endereco");
            rs.next();
            int retorno;
            if(rs.getRow() == 0){
                retorno = 0;
            } else {
                retorno = rs.getInt("MAX(codEndereco)");
            }
            return retorno;
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        }
    }

    public void excluir(EnderecoModel endereco) {
        try {
            bd.atualizar("DELETE FROM endereco WHERE (codCliente = "+endereco.getCodigo()+")");

            System.out.println("DELETE FROM endereco WHERE (codCliente = "+endereco.getCodigo()+")");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public  EnderecoModel buscarEnd(int codigo) {
        try {
            ResultSet rs = bd.consultar("SELECT * FROM endereco WHERE codEndereco = "+codigo);
            rs.next();
             EnderecoModel retorno;
            if(rs.getRow() == 0){
                retorno = null;
            } else {
                  //CidadeModel cidade = cidadePersistencia.buscar(rs.getInt("codCidade"));
                retorno =  new EnderecoModel(rs.getInt("codEndereco"), rs.getInt("codCidade"),rs.getString("rua"),rs.getInt("numero"),rs.getString("cep"));
            }
            return retorno;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }  
}
